/*****************************************************************************/
/*                                                                           */
/*    Domino Operation System Kernel Module                                  */
/*                                                                           */
/*    Copyright (C) 2005 Laszlo Arvai                                        */
/*                                                                           */
/*    ------------------------------------------------------------------     */
/*    krnlMain.c - Main entry function for Domino Operation System           */
/*****************************************************************************/

///////////////////////////////////////////////////////////////////////////////
// Includes
#include "krnlMessageQueue.h"
#include "krnlMessageMap.h"
#include "krnlMain.h"
#include "sysCompiler.h"

///////////////////////////////////////////////////////////////////////////////
// Constants

///////////////////////////////////////////////////////////////////////////////
// System init
void krnlSystemInitialization(void);

///////////////////////////////////////////////////////////////////////////////
// Main Entry Function
DOMINO_ENTRY()
{
	krnlMessage* message = DOS_NULL;

#ifdef WIN32
	printf( "DOMINO OS Emulator, Copyright (c) 2006 Laszlo Arvai\n");
#endif

	// Init system 
	krnlSystemInitialization();

	// main message loop	
	while( FOREVER )
	{ 	
    // prepare for message dispatching
    krnlPreprocessMessages();

    // get message
   	message = krnlGetMessage();

   	if( message != DOS_NULL )
    {
    	// dispatch message
    	krnlDispatchMessage( message );

      // free message
	    krnlFreeMessage();
    }
	}
	
	DOMINO_EXIT();
}
